package helpers {
  import models.vo.Exigencia;

  import mx.utils.StringUtil;

  public class Utils {
    //////////////////////////////////////////////////////////////////////////////////////////////////////

    public static function geDescricaotStatusPleito(status:String, longo:Boolean = false):String {

      if (status == Constants.STATUS_PLEITO_INSCRICAO)
        return "Inscrição"
      else if (status == Constants.STATUS_PLEITO_TRIAGEM)
        return "Triagem"
      else if (status == Constants.STATUS_PLEITO_DISTRIBUICAO)
        return "Distribuição"
      else if (status == Constants.STATUS_PLEITO_ANALISE)
        return "Análise"
      else if (status == Constants.STATUS_PLEITO_CERTIFICACAO)
        return "Certificação"
      else if (status == Constants.STATUS_PLEITO_RECOMENDACAO)
        return "Recomendação"
      else if (status == Constants.STATUS_PLEITO_DELIBERACAO)
        return "Deliberação"
      else if (status == Constants.STATUS_PLEITO_APROVADO)
        return "Aprovado"
      else if (status == Constants.STATUS_PLEITO_ARQUIVADO)
        return "Arquivado"
      else if (status == Constants.STATUS_PLEITO_REJEITADO)
        return "Rejeitado"
      else if (status == Constants.STATUS_PLEITO_TUDO)
        return "Todos"
      else
        return "";

    }

    //////////////////////////////////////////////////////////////////////////////////////////////////////

    public static function geDescricaotStatusExigencia(exigencia:Exigencia, longo:Boolean = false):String {

      if (!exigencia.baixa)
        return "Não"
      else if (exigencia.atendidaParcialmente)
        return "Parcialmente"
      else
        return "Sim";

    }

    //////////////////////////////////////////////////////////////////////////////////////////////////////

    public static function numeroProcessoValido(xProc:String):Boolean {

      var digitosValidos:Array = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9'];
      var soma:int;
      var resto:int;
      var digito:int;
      var i:int;

      xProc = StringUtil.trim(xProc);

      // Tamanho da string
      if (xProc.length != 17)
        return false;

      // Todos os caracteres são numéricos
      for (i = 0; i < 17; i++)
        if (digitosValidos.indexOf(xProc.substr(i, 1)) == -1)
          return false;

	  //Verificar se CUP = 59004
	  if(xProc.substring(0, 5) != "59004")
		return false;

      // Primeiro dígito

      soma = 0;

      for (i = 14; i > -1; i--)
        soma = soma + (parseInt(xProc.substr(i, 1)) * (16 - i));

      resto = (soma * 10) % 11;

      if (resto == 10)
        digito = 0;
      else
        digito = resto;

      if (digito.toString() != xProc.substr(15, 1))
        return false;

      // Segundo dígito

      soma = 0;

      for (i = 15; i > -1; i--)
        soma = soma + (parseInt(xProc.substr(i, 1)) * (17 - i));

      resto = (soma * 10) % 11;

      if (resto == 10)
        digito = 0;
      else
        digito = resto;

      if (digito.toString() != xProc.substr(16, 1))
        return false;

      // Se chegou aqui, tudo azul...
      return true;
    }

  }
}